# 11. 哈希表合并表记录
'''
数据表记录包含表索引index和数值value（int范围的正整数），
请对表索引相同的记录进行合并，即将相同索引的数值进行求和运算，输出按照index值升序进行输出。
0 <= index <= 11111111
1 <= value <= 100000

先输入键值对的个数n（1 <= n <= 500）
接下来n行每行输入成对的index和value值，以空格隔开

示例1
输入：

4
0 1
0 2
1 2
3 4

输出：

0 3
1 2
3 4
'''


class Solution:
    def mergeTable(self):
        # num_row = int(input('输入键值对的个数（1 <= n <= 500）: '))
        num_row = int(input())
        # print('接下来n行每行输入成对的index和value值，以空格隔开')
        temp_s = []
        res = ''
        for i in range(num_row): # 把每行的输入放入列表中
            list1 = list(map(int, input().split(' ')))
            temp_s.append(list1)

        temp_dict = dict()  # 哈希表
        for item in temp_s:
            if not (item[0] in temp_dict): # 表中没数据就创建
                temp_dict[item[0]] = item[1]
            else: #表中已有数据就相加
                temp_dict[item[0]] += item[1]
        # temp_list = sorted(temp_dict.items(), key = lambda x:x[1])
        temp_list = sorted(temp_dict.items()) # 按键值排序
        for index, item in enumerate(temp_list):
            if index < len(temp_list)-1:
                res += str(item[0]) + ' ' + str(item[1]) + '\n'
                # print(res)
            else:
                res += str(item[0]) + ' ' + str(item[1])
        return res


s =Solution()
res = s.mergeTable()
print(res)











